<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>组件全局注册与局部注册</title>
</head>

<body>
    <script src="/js/vue.js"></script>
    <div id="app">
        <!-- 3. 使用组件 -->
        <my-cpn></my-cpn>
        <cpn></cpn>
    </div>

    <div id="app2">
        <my-cpn></my-cpn>
        <!-- <cpn></cpn> -->
    </div>

    <script>
        // 1. 创建组件构造器

        const cpnConstructor = Vue.extend({
            template: `
                <div>
                    <h2>组件中的标题</h2>
                    <p>组件中的内容</p>
                    <button>button</button>
                </div>
            `
        })

        const cpnConstructor2 = Vue.extend({
            template: `
                <div>
                    <h2>组件中的标题2</h2>
                    <p>组件中的内容2</p>
                    <button>button</button>
                </div>
            `
        })

        // 2. 注册组件
        // 2.1 全局注册, 全局组件啊，意味可以在多个Vue实例下使用
        Vue.component('my-cpn'/*组件标签名*/, cpnConstructor/*组件构造器实例*/)
        // 2.2 局部注册
        let app = new Vue({
            el: "#app",
            data: {
                msg: 'hello world'
            },
            // 局部注册，局部组件 开发尽量使用局部注册
            components: {
                //键值对 key：cpn 使用组件时的标签名 value: cpnConstructor 组件构造器
                cpn: cpnConstructor2

            }
        })


        let app2 = new Vue({
            el: "#app2"
        })
    </script>
</body>

</html>